// main.js

// Modules to control application life and create native browser window
const {app, BrowserWindow, screen, ipcMain} = require('electron')
const path = require('path');
const fs = require('fs');

let mainWindow = null;

function createWindow() {
	// Create the browser window.
	mainWindow = new BrowserWindow({
		width: screen.getPrimaryDisplay().workAreaSize.width - 22,
		height: screen.getPrimaryDisplay().workAreaSize.height - 22,
		webPreferences: {
			preload: path.join(__dirname, 'preload.js'),
			nodeIntegration: true,
			//enableRemoteModule: true,
			//webSecurity: false,
			plugins: true,
			contextIsolation: true,
		}
	})

	// and load the index.html of the app.
	mainWindow.loadFile('index.html')

	// Open the DevTools.
	 mainWindow.webContents.openDevTools()
}

// This method will be called when Electron has finished
// initialization and is ready to create browser windows.
// Some APIs can only be used after this event occurs.
app.whenReady().then(() => {
	createWindow()

	app.on('activate', function () {
		// On macOS it's common to re-create a window in the app when the
		// dock icon is clicked and there are no other windows open.
		if (BrowserWindow.getAllWindows().length === 0) createWindow()
	})
})

// Quit when all windows are closed, except on macOS. There, it's common
// for applications and their menu bar to stay active until the user quits
// explicitly with Cmd + Q.
app.on('window-all-closed', function () {
	if (process.platform !== 'darwin') app.quit()
});

ipcMain.on('ondragstart', (event, filePath) => {
	console.log(filePath);
	if(mainWindow) {
		mainWindow.loadFile(filePath);
		mainWindow.webContents.on("did-finish-load", function() {
			let js = fs.readFileSync(path.join(__dirname, 'xlsx.full.min.js')).toString();
			mainWindow.webContents.executeJavaScript(js);

			js = fs.readFileSync(path.join(__dirname, 'index.js')).toString();
			mainWindow.webContents.executeJavaScript(js);
		});
	}
})


// In this file you can include the rest of your app's specific main process
// code. You can also put them in separate files and require them here.
